Page last updated: January 28, 2013
PINYON: Please tell us a little about yourself.
ROB: I was born in Oxford and went to school there. I then took a degree in Psychology in Wales in 1977. This was just before home computers appeared (around 1980). I’d taken a computer programming class in school, but this wasn’t interactive. Our programs were sent off and converted to punched cards, and it took a week to see any results.
PINYON: We remember those punch card days as well. And a week later, you'd discover you'd misplaced a semi-colon, and then you'd wait another week for the result. That's a long way from our nearly instant compile results now. Can you imagine creating a program of WriteItNow's complexity back then?
ROB: No. Any type of interactive program wouldn’t work well. Imagine playing noughts and crosses and a game taking weeks! If the computer had been in the school, and not off campus, with immediate feedback you could probably have written a typewriter program with limited undo options. Anything more complex would have been very difficult.
PINYON: When did you decide to write computer software?
ROB: As soon as home computers appeared I wanted one. I remember reading an article in Byte magazine about the first Apple Macintosh and wanting one but not being able to afford it. Instead I got a Sinclair QL and taught myself 68000 assembler. This was the language used on the early Macintoshes.
PINYON: Assembler (or as American programmers used to say, 'assembly language')!—that's a very low-level way to tell the computer what you want it to do, and not many programmers can even do that now. You must have been thrilled when high-level programming languages appeared?
ROB: Yes. I was writing programs for a company in assembler and thought I’d try Pascal instead. Not only was this much, much easier to do, but it was at least as fast as my assembler version and looked a lot better. I never went back to assembler.
PINYON: Is writing software something you've always intended to do, or is it something that just happened?
ROB: From 1980 I’d thought computers were going to be very important. It took a while to get a programming job as I had no background in this. Initially I started writing my own software and selling it by mail order. This program was a QL font editor and print utility. The print utility sold fairly well, but the QL didn’t, so I got a job writing software for a games company.
Pinyon: Why did you decide to program creative writing software and start your own company? Wouldn't it have been easier to continue working for someone else? Or develop a simpler application?
ROB: I did spend quite a few years working for other companies. I then started working as a self-employed contractor and contracted with a number of large companies including Hewlett Packard, BT, Scottish Power, and NCR.
I always enjoyed programming but was never that keen on working for someone else or on traveling across country for work. My wife, Julia, and I thought about the kind of software we could write that would have a long shelf life and would appeal to a wide range of people. We narrowed it down to gardening and writing and decided that writing software held the most promise.
PINYON: Gardening software? That sounds novel. Were you thinking you'd help gardeners decide which crops to grow?
ROB: It was going to be a garden layout and planning program—providing tips on when to plant and harvest different plants plus a tool for designing the layout of the garden. The factor which decided us against this was that it would need to be customized a lot for each country and region.
PINYON: How do you write a program? Do you sketch out ideas with pen and paper? Or work entirely with a computer?
ROB: Virtually all the programs I’ve written have some sort of user interface, so the first thing I generally do is create a minimal version of this which does enough to let me get started. Then I add features one at a time and add unit tests as I write them.
It’s also vital to know the format of the data you’re handling. I thought about this a lot before writing any WriteItNow code.
Mentally I have an overview of how the program is going to work and write lots and lots of notes on paper. For thinking through ideas paper is still much better than a computer. I write down a single line description of the next step I’m trying to accomplish. Then I’ll write some notes and maybe diagrams on how to do it. These will break the task into smaller steps and I like to check these off as I complete them.
Most of the features in WriteItNow version 3 and version 4 have been suggested to us by writers. I hope, as a result, that WriteItNow has become a program which does what a writer needs it to do.
PINYON: Fascinating. Would you advise a novelist to use a mixture of paper and computer?
ROB: Good question! Paper is still best for brainstorming ideas. You can draw a quick diagram in seconds without having to wait to start a program. These diagrams are disposable so there’s no need to spend lots of time on them. I’m not sure if novelists have this need. A better comparison might be with painters or sculptors who make quick sketches before working on a final piece. Maybe the writing equivalent of this is a notebook for jotting down ideas when not at a computer. Small devices like the iPod may become very useful to writers as notebook substitutes.
PINYON: Do you have a special room or place where you work?
ROB: Yes I do. I don’t like having a phone or other disturbances near me. When working for large companies in open plan offices it was always hard to concentrate. Luckily I now get to work in a room setup exactly how I like it.
PINYON: Are there people who have influenced your approach to writing software?
ROB: Definitely. First Robert Pirsig in Zen and the Art of Motorcycle Maintenance. He describes the difference between caring about what you’re doing and just getting the job done. Later when learning 68000 I read the book on this by Kane, Hawkins, and Leventhal, 68000 Assembly language Programming. This described a difficult subject in a very clear way. Still later I found articles on code optimization by Michael Abrash. These are packed full of advice on how to program code which runs well and runs fast.
Some things change with time though. In the 80’s I read Kernighan and Richie’s book on C programming (The C Programming Language). I still think this is a great book, but it teaches a programming style which can lead to some problems. Later I read Object-Orientated Software Construction by Bertrand Meyer. This shows some of the problems with the C programming style, and I’ve changed my programming as a result of reading it.
One company I worked at insisted on a method called ‘Extreme Programming’ or ‘XP.' I don’t entirely agree with this, but did learn a lot of useful techniques for keeping a project progressing.
PINYON: Which programming language do you use now?
ROB: WriteItNow is written in Java. People still have some odd misconceptions about Java, mostly from only seeing it used in Web Applets. It’s a very clear language which makes programming enjoyable. Modern versions of Java are fast. Because it’s so popular it has thousands of 3rd party libraries so there’s often no need to write something from scratch. It also has a well established method for making code self-documenting, so Java libraries usually come with reasonable documentation. Another Java plus is that it runs almost unchanged on different operating systems. We produce Mac and PC versions of WriteItNow, and these are built from virtually the same code.
PINYON: So it doesn't sound like you do all of your programming from scratch?
ROB: No one does all their programming from scratch. Java comes with libraries which probably cover 90% of anything needed. Where the standard libraries don’t do something specific, and where a good 3rd party library exists, I’ll use this. Occasionally there just isn’t quite what you’re looking for. In these cases you can usually adapt something which exists already.
PINYON: No doubt, in a program of WriteItNow's complexity, testing must be difficult. Do you write your own testing routines? Or do you rely on existing tools?
ROB: WriteItNow has a set of unit tests, which test various aspects of the code. There currently are about 800 of these. Each time I write or change code I try to add a new unit test.
These tests don’t test the user interface very well so we have a set of documented procedures for this. Each of these consists of tests for one part of the program. For example, there are tests for the Word Counter. Running these is tiresome and can take over a week. For minor changes we have a subset of these tests that only take an hour or two. We’re working on making the user interface tests more automated, but this is surprisingly hard.
PINYON: The future of computing seems to be moving toward small, easy to carry around devices (e.g., cell phones, iPods and iPads, Kindle readers, and so on). Do you think it's possible to create a program with WriteItNow's sophistication for a small device?
ROB: Yes. Current small devices have plenty of memory to do this, and their processors are easily fast enough. The only thing holding most back is text entry and the small screen size. It’s possible to redesign the program to get around the screen size issue, but with devices like the IPad or Kindle DX the screen is easily big enough already. Text entry on these is still fiddly but voice to text recognition is getting better, and external keyboards can be used. It’s hard to imagine a novel written entirely on a phone but maybe it’s coming.
PINYON: What's your next project?
ROB: Work on WriteItNow is always an ongoing thing. We get lots of feedback from writers with new ideas. The biggest problem is making sure that new features are genuinely useful and don’t get in the way for people who don’t use them.